package com.sf.asp.service;

import com.sf.asp.entity.Permission;
import com.baomidou.mybatisplus.extension.service.IService;
import com.sf.asp.entity.dto.DeleteDTO;
import com.sf.asp.entity.dto.MenuDTO;
import com.sf.asp.entity.dto.MenuSaveOrUpdateDTO;
import com.sf.asp.entity.vo.MenuVO;
import com.sf.asp.entity.vo.PermissionVO;

import java.util.List;

/**
 * <p>
 *  服务类
 * </p>
 *
 * @author jins
 * @since 2021-11-24
 */
public interface PermissionService extends IService<Permission> {

    /**
     * 获取用户的所有权限信息
     * @param userId 用户ID
     * @return 权限信息
     */
    List<MenuDTO> getUserMenu(String userId);

    /**
     * 获取菜单列表
     * @return 菜单列表数据
     */
    List<MenuVO> listMenu();

    /**
     * 保存菜单
     * @param menu 菜单参数
     */
    void saveMenu(MenuSaveOrUpdateDTO menu);

    /**
     * 编辑菜单
     * @param menu 菜单参数
     */
    void editMenu(MenuSaveOrUpdateDTO menu);


    /**
     * 删除菜单
     * @param delete 删除对象
     */
    void deleteMenu(DeleteDTO delete);


    /**
     * 获取所有文件夹和菜单
     * @return 列表
     */
    List<MenuVO> menuParents();


    /**
     * 获取所有的权限
     * @return 权限列表
     */
    List<MenuVO> getPermissions();


    /**
     * 根据角色获取所有的权限
     * @param roleId 角色ID
     * @return
     */
    List<PermissionVO> getPermissionByRole(Integer roleId);


}
